// package语句：声明当前类所在的包
// com.itheima.demo表示这是在示例相关的包中
package com.itheima.demo;

// import语句：导入Scanner类，用于从键盘读取输入
import java.util.Scanner;

// 电影操作类：用于对电影数组进行各种操作
// public是访问修饰符，表示这个类可以被任何地方访问
// class关键字用于定义一个类
// MovieOperator是类名，表示这是一个电影操作类
public class MovieOperator {
    // private是访问修饰符，表示这个成员变量只能在当前类内部访问
    // Movie[]是数据类型，表示Movie类型的数组
    // movies是成员变量名，用于存储电影对象的数组
    private Movie[] movies; // 记住一个电影对象的数组
    
    // public修饰的构造方法
    // 方法名与类名相同，没有返回值类型
    // 参数是Movie[] movies，表示传入一个电影数组
    // 当创建MovieOperator对象时，需要传入一个电影数组
    public MovieOperator(Movie[] movies) {
        // this关键字表示当前对象
        // this.movies指的是当前对象的movies成员变量
        // 右边的movies是构造方法的参数
        // 将参数movies的值赋值给当前对象的movies成员变量
        this.movies = movies;
    }

    // 打印全部电影信息的方法
    // public修饰，表示这个方法可以被任何地方调用
    // void是返回类型，表示没有返回值
    // printAllMovies是方法名，表示打印所有电影信息
    public void printAllMovies() {
        // 打印提示信息，显示这是全部电影信息
        System.out.println("================全部电影信息如下===============");
        
        // for循环：遍历电影数组中的每一个元素
        // int i = 0：初始化循环变量i为0
        // i < movies.length：循环条件，当i小于数组长度时继续循环
        // i++：每次循环结束后，i自增1
        for (int i = 0; i < movies.length; i++) {
            // 从数组中获取当前索引i对应的电影对象
            // 把获取到的电影对象赋值给局部变量m
            Movie m = movies[i];
            // 打印当前电影对象的信息
            // 使用getter方法获取电影的各个属性值
            // \t表示制表符，用于格式化输出
            System.out.println(m.getId() + "\t" + m.getName() + "\t" + m.getPrice() + "\t" + m.getActor() + "\t");
        }
    }

    // 根据id查询电影的方法
    // public修饰，表示这个方法可以被任何地方调用
    // void是返回类型，表示没有返回值
    // searchMovieById是方法名，表示根据id查找电影
    public void searchMovieById() {
        // 打印提示信息，让用户输入要查询的电影id
        System.out.println("请输入要查询的电影id：");
        
        // 创建Scanner对象，用于从键盘读取输入
        Scanner sc = new Scanner(System.in);
        
        // 调用sc.nextInt()方法读取用户输入的整数，并赋值给变量id
        int id = sc.nextInt();
        
        // for循环：遍历电影数组中的每一个元素
        for (int i = 0; i < movies.length; i++) {
            // 从数组中获取当前索引i对应的电影对象
            Movie m = movies[i];
            
            // if条件判断：检查当前电影对象的id是否等于用户输入的id
            // 使用getter方法m.getId()获取电影的id值
            // ==是比较运算符，用于比较两个值是否相等
            if (m.getId() == id) {
                // 如果找到了匹配的电影，打印该电影的信息
                System.out.println(m.getId() + "\t" + m.getName() + "\t" + m.getPrice() + "\t" + m.getActor() + "\t");
                
                // return关键字：立即结束当前方法的执行
                // 当找到电影后，直接返回，不再继续循环
                return;
            }
        }
        
        // 如果循环结束后还没有找到匹配的电影，打印提示信息
        System.out.println("没有找到该电影");
    }
}
